package logika;

/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */
import java.util.*;

/*******************************************************************************
 * Příkaz, který slouží k prohledání prostorů a věcí.
 *
 * @author    Tomáš Koválik
 * @version   1.0
 */
public class PrikazProzkoumej implements IPrikaz
{
    //== Datové atributy (statické i instancí)======================================
    private static final String NAZEV = "prozkoumej";
    private HerniPlan plan;

    //== Konstruktory a tovární metody =============================================

    /***************************************************************************
     *  Konstruktor ....
     */
    public PrikazProzkoumej(HerniPlan plan)
    {
        this.plan = plan;
    }

    //== Nesoukromé metody (instancí i třídy) ======================================

    /**
     * Metoda provede příkaz. Pokud se do parametru příkazu napíše prostor, nestane se nic. Pokud zůstane parametr prázdný tak se 
     * vypíše, co místonost obsahuje (věci, postavy). Pokud parametrem příkazu bude věc, vrátí metoda její popis a zjistí zda
     * obsahuje další věci. Pokud bude parametrem postava, vrátí metoda její popis.
     */
    public String proved(String... parametry){
        if (parametry.length == 0){        
            String veci = plan.getAktualniProstor().getSeznamVeci(); 
            String lidi = plan.getAktualniProstor().getSeznamPostav();
            return "veci: " + veci + ", postavy: " + lidi;
        }

        else {
            String jmeno = parametry[0];
            Prostor aktProstor = plan.getAktualniProstor();          
            if(aktProstor.obsahujeVec(jmeno)){
                Vec vec = aktProstor.najdiVecVMistnosti(jmeno);
                if(vec.jeZamcena()){
                    return "Tohle neprozkoumám, je to zamčené...";
                }
                else{
                    String obsahVeci = vec.getSeznamVeci();
                    Collection<Vec> veci = vec.getVeci();
                    obsahVeci = vec.getPopis() + obsahVeci;
                    for (Vec neco: veci){
                        aktProstor.vlozVec(neco);
                    }
                    veci.clear();
                    return obsahVeci;
                }
            }
            else if (aktProstor.obsahujePostavu(jmeno)) {
                Postava pos = aktProstor.najdiPostavuVMistnosti(jmeno);
                String postava = pos.getPopis();
                return postava;
            }
            else {
                return "Tohle tady není, nelze to prozkoumat";
            }
        }
    }

    /**
     *  Metoda vrací název příkazu (slovo které používá hráč pro jeho vyvolání)
     *  
     *  @ return nazev prikazu
     */
    @Override
    public String getNazev() {
        return NAZEV;
    }
}